﻿using ConfExpert.Forms.Base;
using DevTeam;
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace ConfExpert.Forms.Aksesuar
{
    public partial class AksPOAyir : XForm
    {
        public AksPOAyir()
        {
            InitializeComponent();
        }

        private void AksPOAyir_Load(object sender, EventArgs e)
        {
            gvAksPOLines.Init("GetAksPOOrtakForAyrim", WhoAmI);
            gvAksPOLines.AddDetailGrid(gvCikisEksikleri, "AksesuarId", 1);
            gvAksPOLines.AddDetailGrid(gvAyrilan, "AksPOLinesId", 2);

            gvAksPOLines.SetViewCaption("Yoldaki Ortak Aksesuarlar");
            gvCikisEksikleri.SetViewCaption("Çıkışlardaki Eksik Miktarlar");
            gvAyrilan.SetViewCaption("Ayrilan Miktarlar");

            gvAksPOLines.AddColumn("KalanMiktar", typeof(int), "YoldakiMiktar - Isnull(QtyAyrilan,0) - Isnull(CikisEksikleri,0)");

            gvAksPOLines.FormatAsNumber(0, "QtyPO", "QtyAyrilan", "QtyAyir", "KalanMiktar", "GelenMiktar", "YoldakiMiktar", "CikisEksikleri");
            gvCikisEksikleri.FormatAsNumber(0, "EksikMiktar");
            gvAyrilan.FormatAsNumber(0, "AyrilanMiktar", "GelenMiktar");

            gvAksPOLines.MakeColumnInvisible("AksPOLinesId");
            gvAyrilan.MakeColumnInvisible("AksPOLinesId");

            gvAksPOLines.YanYanaGetir("KalanMiktar:QtyAyir");

            gvAksPOLines.MakeReadOnly("QtyAyir");

            gvAksPOLines.RowCellStyle += gvAksPOLines_RowCellStyle;
            bbiGuncelle.ItemClick += bbiGuncelle_ItemClick;
            bbiAyir.ItemClick += bbiAyir_ItemClick;

            gvAksPOLines.BestFitColumns();
            gvCikisEksikleri.BestFitColumns();
            gvAyrilan.BestFitColumns();
        }

        void bbiAyir_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvAksPOLines.EndEditing();

            DataTable dtAksPOLines = gvAksPOLines.DataTable();
            if (dtAksPOLines.Select("Isnull(QtyAyir,0) > 0").Length == 0)
            {
                ShowErrorMessage("Lütfen ayırmak istediğiniz miktarları girin !");
                return;
            }

            if (dtAksPOLines.Select("KalanMiktar < QtyAyir ").Length > 0)
            {
                ShowErrorMessage("Ayırmak istediğiniz miktar kalan miktardan büyük olamaz !");
                return;
            }

            Sistem.Conversion.SiparisGir apo = new Sistem.Conversion.SiparisGir();
            if (apo.ShowDialog() == DialogResult.OK)
            {
                //DataTable dtAyir = dtAksPOLines.Select("Isnull(QtyAyir,0) > 0").CopyToDataTable();
                //string xml = dtAyir.Serialize("Table");
                string xml = gvAksPOLines.SerializeChanges();
                ExecuteNonQuery("InsAksPOAyir", xml, WhoAmI,apo.BrandId,apo.SezonId,apo.OrderRef);
                bbiGuncelle.PerformClick();
            }
        }

        void gvAksPOLines_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            if (e.RowHandle > -1)
            {
                switch (e.Column.FieldName)
                {
                    case "KalanMiktar":
                        e.Appearance.FontStyleDelta = FontStyle.Bold;
                        break;
                    case "QtyAyir":
                        e.Appearance.BackColor = Color.LightYellow;
                        break;
                }

            }
        }

        void bbiGuncelle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvAksPOLines.RefreshDataSource(true, "GetAksPOOrtakForAyrim", WhoAmI);
        }
    }
}
